﻿using CSharp_Remote_Control.Model;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace CSharp_Remote_Control.Utils
{
    internal class MsgUtil
    {
        public static string getBegin()
        {
            // 5*8, 补充到1024字节
            return "begin===========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================";
        }

        public static string getEnd()
        {
            // 5*8, 补充到1024字节
            return "end=============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================";
        }

        public static String TCPMsgWrap(string s)
        {
            int supplement = 1024 - s.Length % 1024;
            StringBuilder stringBuilder = new StringBuilder(s);
            for (int i = 0; i < supplement; i++)
            {
                stringBuilder.Append("|");
            }
            return getBegin() + stringBuilder.ToString() + getEnd();
        }

        public static String TCPMsgWrapTO(TransformModel m)
        {
            string s = JsonConvert.SerializeObject(m);
            return TCPMsgWrap(s);
        }


        /// <summary>
        /// 发送字符串消息
        /// </summary>
        /// <param name="s"></param>
        public static void SendMsg(TcpClient c, string s)
        {
            byte[] data = Encoding.UTF8.GetBytes(s);
            c.GetStream().Write(data, 0, data.Length);
        }

        /// <summary>
        /// 发送字符串消息
        /// </summary>
        /// <param name="s"></param>
        public static void SendMsgObj(TcpClient c, TransformModel m)
        {
            string s = JsonConvert.SerializeObject(m);
            byte[] data = Encoding.UTF8.GetBytes(TCPMsgWrap(s));
            c.GetStream().Write(data, 0, data.Length);
        }
    }
}
